package v1

const YTC_CPE string = "ytc_cpe"
const CPE_TYPE string = "poc_cpe"

type Cnnvd struct {
	Entry []Entry `xml:"entry"`
}

type CpeXml struct {
	Name             string    `json:"name"`
	VulnId           string    `json:"vuln_id"`
	Published        string    `json:"published"`
	Modified         string    `json:"modified"`
	Source           string    `json:"source"`
	Severity         string    `json:"severity"`
	VulnType         string    `json:"vuln_type"`
	VulnTypeBaas     string    `json:"vuln_type_baas"`
	Thrtype          string    `json:"thrtype"`
	VulnDescript     string    `json:"vuln_descript"`
	VulnSoftwareList []CpeList `json:"vuln_software_list"`
	Refs             []RefJson `json:"refs"`
	CveId            string    `json:"cve_id"`
	CreatedAt        string    `json:"created_at"`
}

type Entry struct {
	Name             string      `xml:"name"`               //漏洞名称
	VulnId           string      `xml:"vuln-id"`            //cnnvd 漏洞编号id
	Published        string      `xml:"published"`          //发布时间
	Modified         string      `xml:"modified"`           //最新修改时间
	Source           string      `xml:"source"`             // 漏洞来源
	Severity         string      `xml:"severity"`           //安全等级：高危 中危
	VulnType         string      `xml:"vuln-type"`          //漏洞类型 ：跨站脚本
	Thrtype          string      `xml:"thrtype"`            //威胁类型 ：远程
	VulnDescript     string      `xml:"vuln-descript"`      //漏洞描述
	VulnSoftwareList VulSoftware `xml:"vuln-software-list"` //漏洞影响具体版本等
	Refs             Refclild    `xml:"refs"`               //漏洞参考类型
	OtherId          Cve         `xml:"other-id"`
}

type VulSoftware struct {
	Product []string `xml:"product"`
}

type Refclild struct {
	Ref []Ref `xml:"ref"`
}

type Ref struct {
	RefSource string `xml:"ref-source"`
	RefName   string `xml:"ref-name"`
	RefUrl    string `xml:"ref-url"`
}

type RefJson struct {
	RefSource string `json:"ref_source"`
	RefName   string `json:"ref_name"`
	RefUrl    string `json:"ref_url"`
}

type Cve struct {
	CveId string `xml:"cve-id"`
}

type CpeList struct {
	Vendor  string `json:"vendor"`
	Product string `json:"product"`
	Version string `json:"version"`
	Type    string `json:"type"`
}
